package com.itshare.video.service;


import com.itshare.video.common.dto.Result;
import com.itshare.video.common.dto.ViewObject;
import com.itshare.video.pojo.dto.EmailLoginDTO;
import com.itshare.video.pojo.dto.RegisterDTO;
import com.itshare.video.pojo.dto.UserInfoDTO;
import com.itshare.video.pojo.dto.UserTokenDTO;
import com.itshare.video.pojo.po.User;

import java.time.Duration;

/**
* @Author lyr
* @create 2020/10/24 08:42
*/
public interface UserService {


    /**
     * 邮箱登录
     * @param emailLoginDTO
     * @return
     */
    User login(EmailLoginDTO emailLoginDTO);


    Result<?> register(RegisterDTO registerDTO);


    /**
     * 更新用户个人信息
     * @param userInfoDTO
     * @return
     */
    ViewObject updateUserInfo(UserInfoDTO userInfoDTO, UserTokenDTO userTokenDTO);


    /**
     * 获取用户信息
     * @param userId 用户ID
     * @return
     */
    Result<UserInfoDTO> getUserInfo(Long userId);


    /**
     * 冻结用户账号，不能发布视频
     * @return
     */
    Result<?> setUserAccountFreezeForUpload(Integer userId, Duration duration);


    boolean isUserAccountFreeze(Integer userId);


    /**
     * 查询用户剩余冻结时间
     * @param userId
     * @return
     */
    Long getTTLOfAccountFreeze(Integer userId);
}


